8 CLR 10 U$="[197][197][197][197][197][197][197][197][197][197]":O$="[164][164][164][164][164][164][164][164][164]" 100 DATA24,173,0,128,105,128,141,0,128,96,56,173,0,128,233,128,141,0,128,96 110 RESTORE:FORI=830TO849:READIN:POKEI,IN:NEXT 200 PRINT"[147][164][164]";O$;O$;O$;O$:PRINT"SYNTAX-LEHRGANG 'MASCHINENSPRACHE' (6)" 210 PRINTO$;O$;O$;"[164][164][164][164][164]":PRINT"1.3.2. ARITHMETISCHE OPERATIONEN[146]" 220 PRINT"ARITHMETISCHE OPERATIONEN SIND SOLCHE" 230 PRINT"OPERATIONEN, BEI DENEN ADDIERT ODER" 240 PRINT"SUBTRAHIERT WIRD. SIE BEEINFLUSSEN ALLE" 250 PRINT"DAS Z-FLAG UND DAS N-FLAG. D.H.: WENN" 260 PRINT"DAS RECHENERGEBNIS NULL (NEGATIV) IST," 270 PRINT"SETZT DIE CPU DAS Z- (N-) FLAG." 310 I=1:GOSUB5000:IFFLTHEN200 400 PRINT"[147]DIE BEFEHLE ADC, SBC, CMP, CPX UND CPY" 410 PRINT"BEEINFLUSSEN FERNER DAS C-FLG (C=CARRY," 420 PRINT"UEBERTRAG)." 430 PRINT"IM CARRY-FLAG WERDEN UEBERTRAEGE BEI" 440 PRINT"RECHENOPERATIONEN REGISTRIERT. DAS ER-" 450 PRINT"GEBNIS DER ADDITION DER ZWEI ZAHLEN $FF" 460 PRINT"UND $01 IST $00, DAS CARRY-FLAG WIRD" 470 PRINT"DABEI GESETZT." 510 I=2:GOSUB5000:IFFLTHEN200 600 PRINT"[147]EINE WESENTLICHE BESONDERHEIT IST DER" 610 PRINT"DEZIMALE RECHENMODUS: ER[160] KANN DURCH" 620 PRINT"SETZEN DES D-FLAGS FUER DIE BEFEHLE ADC" 630 PRINT"UND SBC EINGESCHALTET WERDEN. ER BE-" 640 PRINT"WIRKT, DASS DIE CPU DAS BYTE $12 JETZT" 650 PRINT"ALS DEZIMALZAHL 12 AUFFASST UND BEAR-" 660 PRINT"BEITET." 670 PRINT"DAS ERGEBNIS DER ADDITION '$09 + $01'" 680 PRINT"IST DANN NICHT MEHR $0A, SONDERN $10 !" 690 PRINT"ES WIRD HIER ALSO DIE DEZIMALE ADDITION" 700 PRINT"'9 + 1 = 10' AUSGEFUEHRT." 740 I=3:GOSUB5000:IFFLTHEN400 800 PRINT"[147][164][164][164]":PRINT"ADC[146]: ADD MEMORY TO ACCUMUL. WITH CARRY" 810 PRINT" [197][197]";SPC(26);"[197]" 820 PRINT"ZUM INHALT DES ACCUMULATORS WERDEN DAS" 830 PRINT"ADRESSIERTE BYTE SOWIE DAS CARRY-FLAG" 850 PRINT"ADDIERT. DIE SUMME STEHT ANSCHLIESSEND" 860 PRINT"IM AC. ENTSTAND EIN UEBERLAUF, SO WIRD" 870 PRINT"DAS C-FLAG GESETZT, ANDERNFALLS RUECK-" 880 PRINT"GESETZT." 890 PRINT"VOR EINER ADDITION MUSS MAN ALSO DAS C-" 900 PRINT"-FLAG RUECKSETZEN, DAMIT NICHT DAS ER-" 910 PRINT"GEBNIS UM EINS ZU GROSS GERAET, FALLS" 920 PRINT"DAS C-FLAG ZUFAELLIG GESETZT WAR." 930 I=4:GOSUB5000:IFFLTHEN600 1000 PRINT"[147]BEISPIELE:":PRINTU$ 1010 PRINT"1. ES SOLL BERECHNET WERDEN $01 + $01 !" 1015 PRINT" ($01 + $01 = $02)" 1020 PRINTTAB(9);"CLC";SPC(9);"LOESCHT DAS C-FLAG" 1030 PRINTTAB(21);"(KOMMT SPAETER!)" 1040 PRINTTAB(9);"LDA # $01 LAED $01 IN DEN AC" 1050 PRINTTAB(9);"ADC # $01 ADDIERT $01 DAZU" 1060 PRINT"DAS ERGEBNIS (= $02) STEHT IM AC, DAS" 1070 PRINT"C-FLAG IST NICHT GESETZT." 1130 I=5:GOSUB5000:IFFLTHEN800 1200 PRINT"[147]2. ES SOLL BERECHNET WERDEN $FF + $01 !" 1210 PRINT" ($FF + $01 = $0100) 1220 [153][163]9);"CLC";[166]9);"LOESCHT DAS C-FLAG" 1230 [153][163]21);"(KOMMT SPAETER!)" 1240 [153][163]9);"LDA # $FF LAED $FF IN DEN AC" 1250 [153][163]9);"ADC # $01 ADDIERT $01 DAZU" 1260 [153]"DAS ERGEBNIS (= $00) STEHT IM AC, DAS" 1270 [153]"C-FLAG IST GESETZT." 1280 I[178]6:[141]5000:[139]FL[167]1000 1400 [153]"LOADTOTOTO":[153]"SBCWAIT SUBTRACT MEMORY FROM AC WITH CARRY" 1410 [153]" TAB( TAB(";[163]33);"TAB(" 1420 [153]"SUBTRAHIERT DAS ADRESSIERTE BYTE UND" 1430 [153]"DAS INVERTIERTE CARRY-FLAG VOM AC. DER" 1440 [153]"PROGRAMMIERER MUSS VOR DER ERSTEN SUB-" 1450 [153]"TRAKTION DAS CARRY-FLAG SETZEN, DAMIT" 1455 [153]"DAS ERGEBNIS NICHT UM EINS ZU KLEIN" 1460 [153]"WIRD. WEIL DAS INVERTIERTE C-FLAG SUB-":[153][163]16);U$;"VAL" 1470 [153]"TRAHIERT WIRD, IST DAS GERADE UMGEKEHRT" 1480 [153]"WIE BEI DER ADDITION MIT ADC." 1510 I[178]7:[141]5000:[139]FL[167]1200 1600 [153]"LOADFINDET BEI DER SUBTRAKTION EIN UEBER-" 1610 [153]"LAUF STATT (D.H.DIE DIFFERENZ IST KLEI-" 1615 [153]"NER ALS NULL),SO WIRD DAS C-FLAGCLOSERUECK-" 1620 [153]"GESETZT,ANDERNFALLS GESETZT. ALSO GENAU" 1622 [153]"UMGEKEHRT WIE BEI ADC." 1630 [153]"BEI ADC UND SBC TRAEGT DAS C-FLAG EINEN" 1640 [153]"EVENTUELL ENTSTEHENDEN UEBERTRAG. DAMIT" 1650 [153]"IST ES MOEGLICH, ZAHLEN, DIE MEHR ALS" 1655 [153]"NUR EIN BYTE UMFASSEN, EINFACH ZU BEAR-" 1660 [153]"BEITEN. HIERZU ZWEI BEISPIELE:" 1710 I[178]8:[141]5000:[139]FL[167]1400 1800 [153]"LOADBEISPIEL (ZUERST ADDITION) :":[153]U$;U$;U$ 1815 [153]"IN DEN SPEICHERN $01, $02 UND $11, $12" 1820 [153]"STEHEN ZWEI ZWEISTELLIGE HEX-ZAHLEN.SIE" 1830 [153]"SOLLEN ADDIERT UND NACH $21, $22, $23" 1840 [153]"GESPEICHERT WERDEN. DAS NIEDERWERTIGERE" 1850 [153]"BYTE STEHT JEWEILS IM ERSTEN SPEICHER." 1855 [153]"BEI DER LOESUNG WENDEN WIR DEN AUTOMA-" 1860 [153]"TISCHEN UEBERLAUF AN:" 1910 I[178]9:[141]5000:[139]FL[167]1600 2000 [153]"LOADCLC RUECKSETZEN DES C-FLAGS" 2005 [153]"LDA $01 LAED ERSTE ZAHL,L IN AC" 2010 [153]"ADC $11 + ZWEITE ZAHL,L" 2015 [153]"STA $21 SUMME,L NACH $21" 2020 [153]"LDA $02 LAED ERSTE ZAHL,H IN AC" 2030 [153]"ADC $12 + ZWEITE ZAHL,H + UEBERTRAG" 2040 [153]"STA $22 SUMME,H1 NACH $22" 2050 [153]"LDA # $00 LAED $00 IN AC" 2055 [153]"ADC # $00 + $00 + UEBERTRAG" 2060 [153]"STA $23 SUMME,H2 NACH $23" 2110 I[178]10:[141]5000:[139]FL[167]1800 2200 [153]"LOADBEI DER ERSTEN ADDITION IST DAS C-FLAG" 2210 [153]"RUECKGESETZT. ADDIERT WERDEN ALSO NUR" 2220 [153]"DIE INHALTE DER SPEICHER $01 UND $11." 2230 [153]"EINE EVENTUELLER UEBERLAUF STEHT IM C-" 2240 [153]"FLAG. VOR DER ZWEITEN ADDITION WIRD DAS" 2250 [153]"C-FLAG NICHT RUECKGESETZT.BEI DER ZWEI-" 2260 [153]"TEN ADDITION WIRD DER UEBERTRAG ALSO" 2270 [153]"MIT DAZU ADDIERT. EBENSO IM DRITTEN" 2280 [153]"ADDITIONSSCHRITT: ES WERDEN DIE ZAHLEN" 2290 [153]"$00, $00 UND DAS C-FLAG ADDIERT.DAS ER-" 2300 [153]"GEBNIS IST IDENTISCH MIT DEM UEBERTRAG." 2310 I[178]11:[141]5000:[139]FL[167]2000 2400 [153]"LOADBEISPIEL (JETZT SUBTRAKTION) :":[153]U$;U$;U$ 2410 [153]"SEC SETZEN DES C-FLAGS" 2420 [153]"LDA $01 LAED ERSTE ZAHL,L IN AC" 2430 [153]"SBC $11 - ZWEITE ZAHL,L" 2440 [153]"STA $21 DIFFERENZ,L NACH $21" 2450 [153]"LDA $02 LAED ERSTE ZAHL,H IN AC" 2460 [153]"SBC $12 - ZWEITE ZAHL,H - UEBERTRAG" 2470 [153]"STA $22 DIFFERENZ,H1 NACH $22" 2480 [153]"LDA # $00 LAED $00 IN AC" 2490 [153]"SBC # $00 - UEBERTRAG" 2500 [153]"STA $23 DIFFERENZ,H2 NACH $23" 2510 I[178]12:[141]5000:[139]FL[167]2200 2600 [153]"LOADBEI DIESER SUBTRAKTION STEHT IM SPEI-" 2620 [153]"CHER $23 NUR DANN NULL, WENN DIE ERSTE" 2630 [153]"ZAHL GROESSER ALS DIE ZWEITE WAR. AN-" 2640 [153]"DERNFALLS FUEHRTCLOSE DIE SUBTRAKTION ZUM" 2650 [153]"SPEICHERINHALT $FF.UEBERLEGEN SIE SICH," 2660 [153]"WARUM!" 2670 [153]"DIE BEIDEN BEFEHLE ADC UND SBC BEEIN-" 2680 [153]"FLUSSEN DIE FLAGS N,Z,C,V. AUF DIE BE-" 2690 [153]"DEUTUNG DES V-FLAGS WOLLEN WIR IM RAH-" 2700 [153]"MEN DIESES LEHRGANGS NICHT EINGEHEN." 2710 I[178]13:[141]5000:[139]FL[167]2400 2800 [153]"LOADAUFGABEN :":[153]U$ 2810 [153]"1. SCHREIBEN SIE EIN MASCHINENPROGRAMM," 2820 [153]"DAS ZUM INHALT DES SPEICHERS $8000 DIE" 2830 [153]"ZAHL $80 HINZUADDIERT. EIN HIERBEI ENT-" 2840 [153]"STEHENDER UEBERTRAG IST OHNE BEDEUTUNG." 2850 [153]"2. DASSELBE MIT SUBTRAKTION!" 2860 [153]"FALLS SIE DIE LOESUNG NICHT FINDEN: DIE" 2870 [153]"BEIDEN PROGRAMME STEHEN AB DEN SPEICHER" 2880 [153]"STELLEN 830 UND 840.SIE KOENNEN SIE MIT" 2890 [153]"SYS 830 BZW. SYS 840 AUFRUFEN." 2910 [153]" - SEITE 14 - <+> ONTOTOTOTOCMDCMDCMDCMDENDEWAIT <-> VON VORNE"; 3060 [141]5020:[145]FL[137]0:[153]"LOAD":[128]:[138] 5000 [143] UMBLAETTERN 5010 [153]" - SEITE";I;"- <+> WEITER <-> ZURUECK"; 5020 [129]I[178]0[164]11:[161]X$:[130] 5030 [161]X$:[139]X$[178]""[167]5030 5040 [139]X$[178]"+"[167]FL[178]0:[142] 5050 [139]X$[178]"-"[167]FL[178]1:[142] 5060 [137]5030 65401 [246]EA[255] 0